package com.gg.communication.event.check;

/**
 * 响应格式校验
 *
 * @author sakura
 * @since 2024/03/04
 */
public interface ReveCheck {

    boolean checkLong(byte[] msg);

    /**
     * 校验响应格式,true通过
     * 返回false则不进行后续操作
     * 返回true则继续后续操作
     *
     * @param msg
     * @return
     */
    boolean check(byte[] msg);

    /**
     * 校验功能码是否正确，如读地址，判断返回的功能码是否是64。true通过
     * 返回false则不进行后续操作
     * 返回true则继续后续操作
     *
     * @param msg
     * @return
     */
    boolean checkFunCode(byte[] msg);

    /**
     * 截取响应数据，将响应的数据
     * 返回给上层调用者
     */
    byte[] getData(byte[] msg);

    /**
     * 接续报文，按照格式将多条报文进行分割
     *
     * @param msg
     * @return
     */
    byte[][] getMsg(byte[] msg);

}
